ヘルスチェックの失敗ですぐに終了してしまう ECS タスクに ECS Exec する方法を教えてください
困っていた内容
ECS Fargate で ALB のヘルスチェックを設定しています。新しいアプリケーションをデプロイしたところ、ヘルスチェックに失敗しました。ECS Exec でデバックをしたいのですがヘルスチェックの失敗後、すぐにタスクが終了してしまいます。 タスクの停止を一時的に止めるなどして、ECS Exec で一定時間デバックを行いたいのですが、どうしたら良いでしょか。
どう対応すればいいの?
ヘルスチェックの猶予期間を設定してください。
ECS サービスから起動した ECS タスクは、ELB のヘルスチェックに失敗すると自動的に停止されますが、猶予期間healthCheckGracePeriodSeconds
で設定された時間は結果が無視されます。そのため、猶予期間の時間内であれば、ヘルスチェックが失敗した状態でもタスクは停止されません。
ヘルスチェックの猶予期間は ECS サービスの設定から変更でき、最大約68年(2,147,483,647秒)まで指定できます。
なお、ELB の設定ではありませんのでご注意ください。
サービス定義パラメータ - Amazon Elastic Container Service
healthCheckGracePeriodSeconds
タイプ: 整数
必須: いいえ
Amazon ECS サービススケジューラが、タスクが RUNNING 状態になった後で異常な Elastic Load Balancing ターゲットのヘルスチェック、コンテナのヘルスチェック、Route 53 のヘルスチェックを無視する期間 (秒単位)。
やってみた
ECS サービスのコンソールを開き、クラスターを選択
サービスを選択
「更新」をクリック
「次のステップ」をクリック
任意の猶予時間(単位:秒)を入力し、「次のステップ」をクリック
「次のステップ」をクリック
指定した猶予時間に問題がないことを確認して、「サービスの更新」をクリック
実際の挙動
猶予時間の変更後も、ヘルスチェックに失敗するとunhealthyとなりますが、
ECS タスク画面ではunhealthyの状態でも、指定の猶予期間まではRUNNING状態となります。